From a725d4c7d28fee701b6997cc46cffddefbcd26bf Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Wed, 30 Sep 2026 22:13:07 +0200 Subject: Allow granular routine frequencies like 5/2w --- .../[projectId]/routine/[routineId]/+page.svelte | 29 ++++++++++------------ 1 file changed, 13 insertions(+), 16 deletions(-) (limited to 'src/routes/projects/[projectId]/routine/[routineId]/+page.svelte') diff --git a/src/routes/projects/[projectId]/routine/[routineId]/+page.svelte b/src/routes/projects/[projectId]/routine/[routineId]/+page.svelte index 359fd5b..bd74b90 100644 --- a/src/routes/projects/[projectId]/routine/[routineId]/+page.svelte +++ b/src/routes/projects/[projectId]/routine/[routineId]/+page.svelte @@ -5,11 +5,8 @@ import StatusBadge from '$lib/components/StatusBadge.svelte'; import Button from '$lib/components/Button.svelte'; import Row from '$lib/components/Row.svelte'; - import { - formatFrequency, - parseIntervalToDays, - computeHealthSeries, - } from '$lib/shared/routine-metrics'; + import { computeHealthSeries } from '$lib/shared/routine-metrics'; + import { Frequency } from '$lib/shared/frequency'; import { formatDayMonth, formatDayMonthYear } from '$lib/shared/temporal'; import SectionTitle from '$lib/components/SectionTitle.svelte'; let { data, form } = $props(); @@ -31,7 +28,7 @@ }); $effect(() => { name = data.routine.name; - frequency = `${data.routine.frequencyDays}d`; + frequency = data.routine.frequency; description = data.routine.description; }); $effect(() => { @@ -41,7 +38,7 @@ return () => clearTimeout(t); } }); - const frequencyDays = $derived(parseIntervalToDays(frequency)); + const freq = $derived(Frequency.safeParse(frequency)); const frozenAt = $derived( data.routine.archived ? Temporal.Instant.from(data.routine.archivedAt ?? data.routine.createdAt) @@ -99,16 +96,16 @@ /> - {#if frequency !== '' && frequencyDays === null} -

Intervalle invalide — ex : 1d, 2w, 3m, 1y

+ {#if frequency !== '' && freq === null} +

Fréquence invalide — ex : 1d, 2w, 5/2w

{/if}